package offer.nowcoder.array;

/**
 * @author DengYuan2
 * @create 2021-02-10 21:29
 */
public class n_50 {
    public static void main(String[] args) {
        String s = "google";
        int res = FirstNotRepeatingChar(s);
        System.out.println(res);
    }

    /**
     * 本打算用HashMap,但不小心看到可以用数组达到一样的效果，于是用了数组
     *
     * @param str
     * @return
     */
    public static int FirstNotRepeatingChar(String str) {
        int length = 97 + 26 - 65;
        int[] arr = new int[length];
        for (int i = 0; i < str.length(); i++) {
            arr[str.charAt(i) - 'a']++;
        }
        //这么写也太麻烦了吧，而且好像不太对
//        int min = Integer.MAX_VALUE;
//        for (int i = 0; i < arr.length; i++) {
//            if (arr[i] == 1) {
//                min = Math.min(min, str.indexOf((char) (i + 'a')));
//            }
//        }
//        return min == Integer.MAX_VALUE ? -1 : min;

        //起码应该这么比较啊
        for (int i = 0; i < str.length(); i++) {
            if (arr[str.charAt(i)-'a']==1){
                return i;
            }
        }
        return -1;

        //大神直接这么写的，但我感觉上面的更少占内存啊，但跑出来报错，不知道为啥
//        int[] cnts = new int[128];
//        for (int i = 0; i < str.length(); i++)
//            cnts[str.charAt(i)]++;
//        for (int i = 0; i < str.length(); i++)
//            if (cnts[str.charAt(i)] == 1)
//                return i;
//        return -1;
    }
}
